<?php

	$db = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
 mysql_select_db(DB_NAME) or die(mysql_error());	

	// Вход в админку
	function is_admin($name, $pass) {
		if ($name == "admin" && $pass == "123") {
			return TRUE;
		}
		return FALSE;
	}

	//Добавление новостей
	function  add_new($title,$description,$file,$file_tmp)
	{
		mysql_select_db(DB_NAME) or die(mysql_error());	
		$max_id="SELECT id, name, long_description,date_news FROM news";	
		$result2=mysql_query($max_id) or die(mysql_error());
		$max_id=0;
		while($news_name=mysql_fetch_array($result2)){
					 $max_id=$news_name["id"]+1; // пока только так догадалась вытягивать максимальное значение id из новостей
			}
		$ext=substr(strrchr($file, '.'), 1);  
		copy($file_tmp,'../images/news/a'.$max_id.'.'.$ext);
		$query="insert into news(name,long_description,image) values('".$title."','".$description."','a".$max_id.".".$ext."')";// храню только название файла с  расширением, дата устанавливается текущая. Дату подкидываю автоматически в базе тип данных timestamp и дефалт CURRENT_TIMESTAMP.
		$result=mysql_query($query) or die(mysql_error());
	}
 
	//Редактирование новостей
	function edit_news()
	{
		mysql_select_db(DB_NAME) or die(mysql_error());	
		$quontity=func_num_args();
		echo $quontity;
		$arr=func_get_args();
		if($quontity==4){
		echo $arr[0].$arr[1].$arr[2].$arr[3];
		$query="update news set name='".$arr[1]."', long_description='".$arr[2]."', image='".$arr[3]."' where id='".$arr[0]."'";}
		if($quontity==5){
		echo $arr[0].$arr[1].$arr[2].$arr[3].$arr[4];
		$ext=substr(strrchr($arr[3], '.'), 1);  
		copy($arr[4],'../images/news/a'.$arr[0].'.'.$ext);
		$query="update news set name='".$arr[1]."', long_description='".$arr[2]."', image='a".$arr[0].".".$ext."' where id='".$arr[0]."'";
		}	
		$result=mysql_query($query) or die(mysql_error());
	}
	
	// для сайдбара отображение категорий
	function get_shop_category() {
		$shop_cat = array();
	mysql_select_db(DB_NAME) or die(mysql_error());	
		$query = "SELECT DISTINCT c.id_category, c.name " .
				 "FROM category AS c " .
				 "INNER JOIN goods AS g ON g.id_category = c.id_category";
		$res = mysql_query($query) or die(mysql_error());

		while($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
			$shop_cat[] = array($row['id_category'], $row['name']);
		}
		return $shop_cat;
	}
	
	// Функция принимает глобальный массив $_POST и $_FILE
	// и в зависимости от имя сабмита парсит ту или иную форму
	// и добавляет данные в БД
	function main_add($data, $file) { 
		global $db_name;
		mysql_select_db(DB_NAME) or die(mysql_error());
		foreach ($data as $key => $value) {
			switch ($key) {
				case 'goods_add':
					$name = $data['goods_name'];
					$description = $data['goods_desc'];
					$price = $data['goods_price'];
					$id_cat = $data['goods_cat'];
					$img_name = $file['goods_img']['name'];
					$from = $file['goods_img']['tmp_name'];
					$to = "../" . PATH_GOODS . basename($img_name);

					if (!$file['goods_img']['error']) {
						if (!copy($from, $to)) {
							echo "<div class='alert alert-danger'>Ошибка перемещения файла</div>";
							exit;
						}
					}


					if (add_goods($name, $description, $price, $id_cat, $img_name))
						echo "<div class='alert alert-success'>Данные успешно добавленны</div>";
					else {
						echo "<div class='alert alert-danger'>Ошибка добавления данных !";
						echo "<br /> Все поля формы должны быть заполненны</div>";
					}
					break;
				case 'cat_add':
					$name = $data['cat_name'];

					if (add_cat($name))
						echo "<div class='alert alert-success'>Данные успешно добавленны</div>";
					else {
						echo "<div class='alert alert-danger'>Ошибка добавления данных !";
						echo "<br /> Все поля формы должны быть заполненны</div>";
					}
					break;
				case 'goods_edit':
					$id = $data['id_goods_edit'];
					$name = $data['goods_name_edit'];
					$description = $data['goods_desc_edit'];
					$price = $data['goods_price_edit'];
					$id_cat = $data['goods_cat_edit'];
					$img_name = $file['goods_img_edit']['name'];

					$from = $file['goods_img_edit']['tmp_name'];
					$to = "../" . PATH_GOODS . basename($img_name);

					if (!$file['goods_img_edit']['error']) {
						if (!copy($from, $to)) {
							echo "<div class='alert alert-danger'>Ошибка перемещения файла</div>";
							exit;
						}
					}

					if (update_goods($id, $name, $description, $price, $id_cat, $img_name))
						echo "<div class='alert alert-success'>Данные успешно измененны</div>";
					else {
						echo "<div class='alert alert-danger'>Ошибка добавления данных !";
						echo "<br /> Все поля формы должны быть заполненны</div>";
					}

					break;
				case 'cat_upd':
					$id = $data['id_cat'];
					$name = $data['cat_name'];
					if (upd_cat($id, $name))
						echo "<div class='alert alert-success'>Данные успешно измененны</div>";
					else {
						echo "<div class='alert alert-danger'>Ошибка добавления данных !";
						echo "<br /> Все поля формы должны быть заполненны</div>";
					}
					break;
				default:
					# code...
					break;
			}
		}

	}

	// Добавляет товар в базу данных принимает параметры
	// имя товара(string), описание товара(string), цена товара(float)
	// ид_категории(int), название картинки(string)
	// возвращает true или false
	function add_goods($name, $description, $price, $id_cat, $img) {
		if (empty($name) ||empty($description) || empty($price) || empty($id_cat) || empty($img) ) return FALSE;

		$str = $name . "','" . $description . "','" . $price . "','" . $id_cat . "','" . $img;
		$query = "INSERT INTO goods(name, description, price, id_category, img) VALUES('".$str."')";
		$res = mysql_query($query);

		if (!$res)
			die(mysql_error());
		else
			return TRUE;

	}

	// Добавляем категории в БД принимает параметр имя категории
	// возвращает true или false
	function add_cat($name) {
		if (empty($name)) return FALSE;

		$query = "INSERT INTO category(name) VALUES ('".$name."')";
		$res = mysql_query($query);

		if (!$res)
			die(mysql_error());
		else
			return TRUE;
	}

	// Берем все категории из БД
	// возврашает двухмерный массив с ид и именем категории
	function get_cat() {
		$cat_res = array();

		$query = "SELECT id_category, name FROM category";
		$res = mysql_query($query);

		if (!$res)
			die(mysql_error());

		while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
			$cat_res[] = array($row['id_category'], $row['name']);
		}

		return $cat_res;
	}

	function upd_cat($id, $new_name) {
		if ((empty($id) || empty($new_name))|| ($id == 0)) return FALSE;

		$query = "UPDATE category SET name = '".$new_name."'  WHERE id_category = ".$id;
		mysql_query($query) or die(mysql_error());
		return TRUE;
	}

	// Выбираем все товары (если передать параметр ид_товара то вернет
	// данные только одного товара)
	// возврашает двумерный массив с ид товара, имя товара, описание товара,
	// цена товара, картинка товара, дат добавления товара, имя категории товара
	function get_goods($id_g=0) {
		$goods_res = array();
		$query_add = '';

		if ($id_g) $query_add = "WHERE g.id_goods = " . $id_g;

		$query = "SELECT g.id_goods, g.name, g.description, g.price, g.img, g.goods_date, c.name AS cat_name " . 
				 "FROM goods AS g INNER JOIN category AS c ON g.id_category = c.id_category " . $query_add;
		$res = mysql_query($query);

		if (!$res)
			die(mysql_error());

		while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
			$goods_res[] = array(
				"id_goods" => $row['id_goods'],
				"name" => $row['name'],
				"description" => $row['description'],
				"price" => $row['price'],
				"img" => $row['img'],
				"goods_date" => $row['goods_date'],
				"cat_name" => $row['cat_name']
			);
		}

		return $goods_res;
	}

	// Удаляет товар из БД 
	// принимает параметр ид товара
	// возвращает true или false
	function delete_goods($id) {
		if (empty($id)) return FALSE;

		$query = "DELETE FROM goods WHERE id_goods = " . $id;
		mysql_query($query) or die(mysql_error());
		return TRUE;
	}

	// Изменение товара в бд
	// принимает теже параметры что и добавление в бд
	// возвращает true или false
	function update_goods($id, $name, $description, $price, $id_cat, $img) {
		if (empty($name) ||empty($description) || empty($price) || empty($id_cat) || empty($img) ) return FALSE;


		$query = "UPDATE goods SET " .
				 "name='$name' , description='$description', price='$price'" .
				 ", id_category='$id_cat', img='$img' WHERE id_goods = $id";

		mysql_query($query) or die(mysql_error());
		return TRUE;

	}

	// Выбираем все данные пользователя и заказанный им товар
	// возвращает двумерный массив с статусом заказа,
	// инфо о пльзователе, имя товара, кол-во товара, ид_заказа, цена товара
	function get_order() {
		$order_data = array();

		$query = "SELECT c.status, c.id_card, c.info_user, g.name, g.price, goods_card.quontity" . 
				 " FROM card AS c ". 
				 " INNER JOIN goods_card ON c.id_card = goods_card.id_card " .
				 " INNER JOIN goods AS g ON g.id_goods = goods_card.id_goods ";

		$res = mysql_query($query) or die(mysql_error());

		while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
			$order_data[] = array(
				"status" => $row['status'],
				"info_user" => $row['info_user'],
				"name" => $row['name'],
				"quontity" => $row['quontity'],
				"id" => $row['id_card'],
				"price" => $row['price']
			);
		}

		return $order_data;
	}

	// Функция меняет статус заказа с 0 на еденицу
	function add_card($id) {
		if (empty($id) || ($id == 0)) return FALSE;

		$query = "UPDATE card SET status = 1 WHERE id_card = " . $id;
		mysql_query($query) or die(mysql_error());
		return TRUE;
	}

	// Функция удаляет корзину выбранного пользователя
	function delete_card($id) {
		if (empty($id) || ($id == 0)) return FALSE;

		$query = "DELETE FROM card WHERE id_card = " . $id;
		mysql_query($query) or die(mysql_error());


		$query = "DELETE FROM goods_card WHERE id_card = " . $id;
		mysql_query($query) or die(mysql_error());
		return TRUE;
	}

?>